import { defineConfig } from 'eslint-define-config';
import vueParser from 'vue-eslint-parser';
import tsParser from '@typescript-eslint/parser';
import vue from 'eslint-plugin-vue';
import tsPlugin from '@typescript-eslint/eslint-plugin';
import prettierPlugin from 'eslint-plugin-prettier';

export default defineConfig([
  {
    files: ['**/*.ts', '**/*.tsx', '**/*.vue'], // 适用于 TypeScript, TSX 和 Vue 文件
    languageOptions: {
      parser: vueParser, // 使用 Vue 解析器
      parserOptions: {
        parser: tsParser, // 使用 TypeScript 解析器来解析 TS 和 TSX
        ecmaVersion: 2020, // 支持 ECMAScript 2020
        sourceType: 'module', // 允许使用 import/export
        ecmaFeatures: {
          jsx: true, // 支持 TSX/JSX 语法
        },
      },
    },
    plugins: {
      vue,
      '@typescript-eslint': tsPlugin,
      prettier: prettierPlugin,
    },
    rules: {
      ...tsPlugin.configs.recommended.rules, // TypeScript 推荐规则
      ...vue.configs['vue3-recommended'].rules, // Vue 3 推荐规则
      'prettier/prettier': 'error', // Prettier 规则
      'vue/multi-word-component-names': 'off', // 关闭 Vue 组件多字命名规则
      '@typescript-eslint/explicit-module-boundary-types': 'off', // 关闭显式返回类型规则
      '@typescript-eslint/no-explicit-any': 'off', // 关闭 any 类型使用规则
      'vue/no-v-html': 'off', // 禁用 vue/no-v-html
      '@typescript-eslint/no-unused-expressions': 'off', // 全局禁用 no-unused-expressions 规则
      'vue/valid-v-for': 'off', // 禁用 v-for 验证
      'vue/valid-v-model': 'off', // 禁用 v-model 验证
      'vue/attributes-order': 'off', // 禁用属性顺序验证
      'vue/order-in-components': 'off', // 禁用组件内顺序验证
      'vue/no-lone-template': 'off', // 禁用单独 template 验证
    },
    settings: {
      'import/resolver': {
        node: {
          extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'], // 支持解析的扩展名
        },
      },
    },
  },
  {
    ignores: ['node_modules/', 'dist/'], // 忽略文件和目录
  },
]);
